Ridefinire l'OO in Rust implica passare da gerarchie di classi rigide verso un modello focalizzato sulla separazione tra dati e comportamento. Mentre i linguaggi tradizionali per sistemi si basano su alberi oggetti complessi, Rust soddisfa gli obiettivi del design OO — incapsulamento e polimorfismo — utilizzando trait e moduli per privilegiare la sicurezza della memoria senza sovraccarichi a tempo di esecuzione.
1. Mettere in discussione la gerarchia
Rust evita esplicitamente l'ereditarietà di implementazione per prevenire il problema del base fragile problema. Invece, favorisce la composizione e trait per definire comportamenti condivisi tra tipi diversi. Un "oggetto" qui è una combinazione di dati (struct) e procedure (blocco impl), verificata a tempo di compilazione.
2. Concurrencia e stato come tipo
Rust gestisce la concorrenza principalmente tramite la libreria standard (Send/Sync trait) piuttosto che il nucleo del linguaggio. Per massimizzare la sicurezza, l'algoritmo Algoritmo Stato come Tipo codifica stati distinti in tipi diversi. Le transizioni restituiscono nuove istanze, spostando la logica dagli statement a tempo di esecuzione if agli statement a tempo di compilazione.